export default function updateNodeElement (newElement, virtualDom, oldVirtualDom = {}) {
  const newProps = virtualDom.props || {}
  const oldProps = oldVirtualDom.props || {}

  Object.keys(newProps).forEach(propName => {
    const newPropsValue = newProps[propName]
    const oldPropsValue = oldProps[propName]
    if (newPropsValue !== oldPropsValue) {
      if (propName.slice(0, 2) === 'on') {// 添加事件属性
        const eventName = propName.toLowerCase().slice(2)
        newElement.addEventListener(eventName, newPropsValue)
        if (oldPropsValue) {
          newElement.removeEventListener(eventName, oldPropsValue)
        }
      } else if (propName === 'value' || propName === 'checked') {// 添加value和checked
        newElement[propName] = newPropsValue
      } else if (propName !== 'children') {
        if (propName === 'className') {// 添加class
          newElement.setAttribute('class', newPropsValue)
        } else {// 添加普通属性
          newElement.setAttribute(propName, newPropsValue)
        }
      }
    }
    
  })
  // 判断属性被删除
  Object.keys(oldProps).forEach(propName => {
    const newPropsValue = newProps[propName]
    const oldPropsValue = oldProps[propName]
    if (!newPropsValue) {
      if (propName.slice(0, 2) === 'on') {
        const eventName = propName.toLowerCase().slice(2)
        newElement.removeEventListener(eventName, oldPropsValue)
      } else if (propName !== 'children'){
        newElement.removeAttribute(propName)
      }
    }
  })
}